﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Xml;
using Dlls;
using Persistencia;

namespace XGerencial.Lancamentos.Pedido
{
    /// <summary>
    /// Interaction logic for frmImportarPedido.xaml
    /// </summary>
    /// 
  
    public partial class frmImportarPedido : Window
    {
        private List<Produto> listProdutos;
        private List<Pessoa> listPessoas;
        private List<FormaPagamento> listFPagamento;
        private List<Vendedore> listVendedores;
        private List<Operacoe> listOperacoes;
        private OperacoesDLL operacoesDll;
        private VendedorDLL vendedoresDll;
        private PessoasDLL pessoasDll;
        private ProdutosDLL produtosDll;
        private FormaPagamentoDLL fPagamentoDll;
        private XmlTextWriter arquivo;
        public frmImportarPedido()
        {
            operacoesDll = new OperacoesDLL();
            produtosDll = new ProdutosDLL();
            pessoasDll = new PessoasDLL();
            vendedoresDll = new VendedorDLL();
            fPagamentoDll = new FormaPagamentoDLL();
            listFPagamento = new List<FormaPagamento>();
            listVendedores = new List<Vendedore>();
            listProdutos = new List<Produto>();
            listPessoas = new List<Pessoa>();
            listOperacoes = new List<Operacoe>();
            InitializeComponent();
        }

        private void ExportarCargar(object sender, RoutedEventArgs e)
        {
            try
            {
                listVendedores = vendedoresDll.ListaCompleta();
                foreach (Vendedore vend in listVendedores)
                {
                    string NomePasta = vend.CodVendedor.ToString();
                    CriaCargaVendedor(NomePasta);

                    if (chkProdutos.IsChecked == true)
                    {
                        arquivo = new XmlTextWriter(@NomePasta+"/impprodutos.xml", null);
                        arquivo.WriteStartDocument();

                        arquivo.WriteStartElement("fdv");
                        arquivo.WriteElementString("data", DateTime.Now.ToString());
                        arquivo.WriteElementString("vendedor", NomePasta);
                        arquivo.WriteStartElement("valores");

                        listProdutos = produtosDll.List();

                        foreach (Produto Listaprodutos in listProdutos)
                        {
                            GerarArquivoProduto(arquivo, "produtos", "sub", vend.CodVendedor.ToString(),
                            Listaprodutos.Codigo.ToString(), Listaprodutos.Nome,
                            Listaprodutos.UnidadeMedida, Listaprodutos.Estoque.ValorVenda.ToString(),
                            "00", Listaprodutos.Estoque.QuantidadeEstoque.ToString(),
                            "0", "789", "www", "10", Listaprodutos.Estoque.ValorVenda.ToString(), Listaprodutos.GrupoProduto.Codigo.ToString(), Listaprodutos.GrupoProduto.Nome);
                        }
                        arquivo.Close();
                    }
                    if (chkClientes.IsChecked == true)
                    {
                        arquivo = new XmlTextWriter(@NomePasta + "/impclientes.xml", null);
                        arquivo.WriteStartDocument();

                        arquivo.WriteStartElement("fdv");
                        arquivo.WriteElementString("data", DateTime.Now.ToString());
                        arquivo.WriteElementString("vendedor", NomePasta);
                        arquivo.WriteStartElement("valores");

                        listPessoas = pessoasDll.ListaCompleta();
                        foreach (Pessoa item in listPessoas)
                        {
                            GerarArquivoClientes(arquivo, vend.CodVendedor.ToString(), item.Codigo.ToString(), item.Nome.ToString(), item.FantasiaApelido.ToString(), "true", "1", item.CPFCNPJ.ToString(), item.InscricaoEstadual.ToString(), item.Endereco.Logradouro.ToString(), item.Endereco.Numero.ToString(), item.Endereco.Complemento.ToString(),
                                                item.Endereco.Cep.ToString(), item.Endereco.Bairro.ToString(), item.Endereco.Cidade.ToString(), item.Endereco.Estado.ToString(), item.Email.ToString(), item.Telefone.ToString(), item.Contato, "Obs", item.Contato, "1", "Regiao");
                        }
                        arquivo.Close();
                    }
                    if (chkFPagamentos.IsChecked == true)
                    {
                        arquivo = new XmlTextWriter(@NomePasta+"/impcondpagtos.xml", null);
                        arquivo.WriteStartDocument();

                        arquivo.WriteStartElement("fdv");
                        arquivo.WriteElementString("data", DateTime.Now.ToString());
                        arquivo.WriteElementString("vendedor", NomePasta);
                        arquivo.WriteStartElement("valores");

                        listFPagamento = fPagamentoDll.ListCompleta();
                        foreach (FormaPagamento item in listFPagamento)
                        {
                            GerarArquivoFPagamento(arquivo, vend.CodVendedor.ToString(), item.Codigo.ToString(), item.Descricao.ToString(), item.Parcelas.ToString(), "10");
                        }
                        arquivo.Close();
                    }
                    if (chkOperacoes.IsChecked == true)
                    {
                        arquivo = new XmlTextWriter(@NomePasta+"/impoperacoes.xml", null);
                        arquivo.WriteStartDocument();

                        arquivo.WriteStartElement("fdv");
                        arquivo.WriteElementString("data", DateTime.Now.ToString());
                        arquivo.WriteElementString("vendedor", NomePasta);
                        arquivo.WriteStartElement("valores");

                        foreach (var item in listOperacoes)
	                        {
                                GerarArquivoOperacoes(arquivo, NomePasta, item.Codigo.ToString(), item.Nome.ToString(), item.GeraFinanceiro.ToString());
	                        }
                        arquivo.Close();
                    }
                }
    
                MessageBox.Show("Arquivo Gerado");
            }
            catch (Exception)
            {

                throw;
            }
        }

        private void GerarArquivoProduto(XmlTextWriter iArquivo, string iTipo, string iSubElemento, string iCodVendedor, string iCodProduto, string iNomeProduto,
            string iUnidade, string iPrecoVenda, string iMaxDesconto, string iEstoque, string iMultipo, string iCodbarras, string iUrl,
            string iQtoEmbalagem, string vendaUnid, string CodImporGrupo, string DescrGrupo)
        {
            try
            {
               // while (iArquivo !=null)
             //   {
                    iArquivo.Formatting = Formatting.Indented;
                    // Criando raiz
                   
                    iArquivo.WriteStartElement("produto");
                    iArquivo.WriteElementString("codigoImport", iCodProduto);
                    iArquivo.WriteElementString("descricao", iNomeProduto);
                    iArquivo.WriteElementString("un", iUnidade);
                    iArquivo.WriteElementString("precoVenda", iPrecoVenda);
                    iArquivo.WriteElementString("precoMaxDesconto", iMaxDesconto);
                    iArquivo.WriteElementString("estoque", iUnidade);
                    iArquivo.WriteElementString("multiplo", iEstoque);
                    iArquivo.WriteElementString("codBarras", iCodbarras);
                    iArquivo.WriteElementString("bonifica", iUnidade);
                    iArquivo.WriteElementString("url", iUrl);
                    iArquivo.WriteElementString("quantidadeemb", iQtoEmbalagem);
                    iArquivo.WriteElementString("vendeunidade", vendaUnid);
                    iArquivo.WriteStartElement("grupo");
                    iArquivo.WriteElementString("codigoImport", CodImporGrupo);
                    iArquivo.WriteElementString("descricao", DescrGrupo);
                    iArquivo.WriteEndElement();
                    iArquivo.WriteFullEndElement();
                    
             //   }
                
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
        }
        private void GerarArquivoClientes(XmlTextWriter iArquivo, string iCodVendedor ,string iCodPessoa, string iNomePessoa, string iFantasia, string iSituacao, string iFpagamento,
                     string iDocumento1, string iDocumento2, string iLogadouro, string iNumero, string iComplemento, string iCep, string iBairro, string iCidade, string iUF,
                     string iEmail, string iTelefone, string iResponsavel, string iObservacao, string iTipoPessoa, string iCodRegiao, string iNomeRegiao)
        {
            iArquivo.Formatting = Formatting.Indented;
            // Criando raiz
            //iArquivo.WriteStartElement("fdv");
            //iArquivo.WriteElementString("data", DateTime.Now.ToString());
            //iArquivo.WriteElementString("vendedor", iCodVendedor);
            //iArquivo.WriteStartElement("valores");
            iArquivo.WriteStartElement("cliente");
          //  iArquivo.WriteStartElement("produto");
            iArquivo.WriteElementString("codigoImport", iCodPessoa);
            iArquivo.WriteElementString("nome", iNomePessoa);
            iArquivo.WriteElementString("fantasia", iFantasia);
            iArquivo.WriteElementString("ativo", iSituacao);
            iArquivo.WriteElementString("formaPagamento", iFpagamento);
            iArquivo.WriteElementString("documento1", iDocumento1);
            iArquivo.WriteElementString("documento2", iDocumento2);
            iArquivo.WriteElementString("endereco", iLogadouro);
            iArquivo.WriteElementString("num", iNumero);
            iArquivo.WriteElementString("complEnd", iComplemento);
            iArquivo.WriteElementString("cep", iCep);
            iArquivo.WriteElementString("bairro", iBairro);
            iArquivo.WriteElementString("cidade", iCidade);
            iArquivo.WriteElementString("uf", iUF);
            iArquivo.WriteElementString("email", iEmail);
            iArquivo.WriteElementString("telefone", iTelefone);
            iArquivo.WriteElementString("responsavel", iResponsavel);
            iArquivo.WriteElementString("obs", iObservacao);
            iArquivo.WriteStartElement("regiao");
            iArquivo.WriteElementString("codigoImport", iCodRegiao);
            iArquivo.WriteElementString("nome", iNomeRegiao);
            iArquivo.WriteEndElement();
            iArquivo.WriteFullEndElement();
        }
        private void GerarArquivoFPagamento(XmlTextWriter iArquivo, string iCodVendedor, string iCodCondicao, string iDescricao, string iParcelas, string iPorDesconto)
        {
            iArquivo.Formatting = Formatting.Indented;
            iArquivo.WriteStartElement("condpagto");
            //  iArquivo.WriteStartElement("produto");
            iArquivo.WriteElementString("codigoImport", iCodCondicao);
            iArquivo.WriteElementString("descricao", iDescricao);
            iArquivo.WriteElementString("parcelas", iParcelas);
            iArquivo.WriteElementString("porcDesc", iPorDesconto);
            iArquivo.WriteEndElement();
            iArquivo.WriteFullEndElement();

        }
        private void GerarArquivoOperacoes(XmlTextWriter iArquivo, string iCodVendedor, string iCodImportacao, string iDescricao, string iGeraFinanceiro)
        {
            iArquivo.Formatting = Formatting.Indented;
            iArquivo.WriteStartElement("operacao");
            //  iArquivo.WriteStartElement("produto");
            iArquivo.WriteElementString("codigoImport", iCodImportacao);
            iArquivo.WriteElementString("descricao", iDescricao);
            iArquivo.WriteElementString("movfin", iGeraFinanceiro);
            iArquivo.WriteElementString("movfis", "0");
            iArquivo.WriteEndElement();
            iArquivo.WriteFullEndElement();

        }
        private void CriaCargaVendedor(string iCodVendedor)
        {
            string Pasta = iCodVendedor;
            if (!Directory.Exists(Pasta))
            {
                Directory.CreateDirectory(Pasta);
            }
        }
    }
}
